package org.jederik.android.provider;

import java.util.HashMap;
import java.util.Map;

import org.jederik.studip.android.view.ViewMessage;
import org.jederik.studip.android.view.ViewNews;
import org.jederik.studip.android.view.ViewSchedule;

import android.app.Activity;
import android.net.Uri;
import android.provider.BaseColumns;

/**
 * Diese Klasse enthält Werte, die für die Verwendung des ContentProviders 
 * {@link org.jederik.studip.android.provider.StudipProvider} benötigt werden. Sie 
 * ist analog zur entsprechenden Datei im {@code NodePad}-Codebeispiel aus der
 * Android-Dokumentation aufgebaut.
 * @author Jann-Frederik Laß
 *
 */
public final class StudIP {
	
	/** Die URI unter der, der Inhalt zur Verfügung steht. */
	public static final String AUTHORITY = "org.jederik.android.provider.StudIP";
	
	public static final Uri CONTENT_URI = Uri.parse("content://" + AUTHORITY + "/_all");
	
	public static final String CONTENT_TYPE = "vnd.android.cursor.item/org.jederik.studip";
	
	/** Bezeichner für den Resourcentyp News */
	public static final String TYPE_NEWS = "news";
	
	/** Bezeichner für den Resourcentyp Message */
	public static final String TYPE_MESSAGE = "message";
	
	/** Bezeichner für den Resourcentyp Schedule */
	public static final String TYPE_SCHEDULE = "schedule";

	/** Bezeichner für den Resourcentyp Course */
	public static final String TYPE_COURSE = "course";
	
	/**
	 * Liefert für jeden Resourcentyp einen Standardpfad unter dem die Resourcen
	 * dieses Typs abgerufen werden können.
	 */
	public static final Map<String, String> defaultPaths = new HashMap<String, String>() {
		{
			put(TYPE_NEWS, "/news");
			put(TYPE_MESSAGE, "/messages");
			put(TYPE_SCHEDULE, "/schedules");
		}
	};
	
	/**
	 * Liefert für jeden Resourcentyp eine Content-Uri unter dem die Resourcen
	 * dieses Typs abgerufen werden können.
	 */
	public static final Map<String, Uri> defaultUris = new HashMap<String, Uri>() {
		{
			put(TYPE_NEWS, News.CONTENT_URI);
			put(TYPE_MESSAGE, Messages.CONTENT_URI);
			put(TYPE_SCHEDULE, Schedules.CONTENT_URI);
		}
	};
	
	/**
	 * Liefert für jeden Resourcentyp den Tabellennamen, in dem die Resourcen
	 * dieses Typs liegen.
	 */
	public static final Map<String, String> defaultTables = new HashMap<String, String>() {
		{
			put(TYPE_NEWS, News.DB_TABLE_NAME);
			put(TYPE_MESSAGE, Messages.DB_TABLE_NAME);
			put(TYPE_SCHEDULE, Schedules.DB_TABLE_NAME);
		}
	};
	
	// TODO entfernen
	public static final Map<String, Class<? extends Activity>> defaultActivities = new HashMap<String, Class<? extends Activity>>() {
		{
			put(TYPE_NEWS, ViewNews.class);
			put(TYPE_MESSAGE, ViewMessage.class);
			put(TYPE_SCHEDULE, ViewSchedule.class);
		}
	};

	/** Spaltenname für die Stud.IP-ID der beschriebenen oder referrenzierten 
	 * Resource. Kommt in fast allen Tabellen vor. */
	public static final String OBJECT_ID = "object_id";
	
	/** Spaltenname für den Synchronisationsstatus der beschriebenen oder 
	 * referrenzierten Resource. Kommt in fast allen Tabellen vor. */
	public static final String _SYNC_STATE = "_sync_state";

	// Mgl. Flags für _sync_state:
	/** Wert für {@code _SYNC_STATE}, der angibt, dass eine Synchronisation der Resource aussteht. */
	public static final int STATE_PENDING = 0;

	/** Wert für {@code _SYNC_STATE}, der angibt, dass die Resource gerade synchronisiert wird. */
	public static final int STATE_SYNCHRONIZING = 1;

	/** Wert für {@code _SYNC_STATE}, der angibt, dass die Resource synchronisiert ist. */
	public static final int STATE_SYNCHRONIZED = 2;

	/** Wert für {@code _SYNC_STATE}, der angibt, dass die Resource nicht synchronisiert werden konnte. */
	public static final int STATE_FAILED = 3;

	// Klasse kann nicht instanziiert werden:
	private StudIP() {}
	
	/**
	 * Beinhaltet Werte, die benötigt werden, um auf die Tabelle {@code /news} 
	 * zuzugreifen.
	 * @author Jann-Frederik Laß
	 */
	public static class News implements BaseColumns {
		
		// Nicht instanziierbar:
		private News() {}
		
		public static final String DB_TABLE_NAME = "news";

		/** Bezeichner der Tabelle */
	    public static final String CONTENT_TABLE_NAME = "news";
	    
	    /** URI zur Tabelle */
		public static final Uri CONTENT_URI = Uri.parse("content://" + AUTHORITY + "/" + CONTENT_TABLE_NAME);
		
		/** MIME-Typ der die Ausgabedaten beschreibt */
        public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/org.jederik.studip.news";

        /** Typ-Bezeichner der enthaltenen Daten */
        public static final String TYPE_DESCRIPTOR = TYPE_NEWS;

        
        /** Überschrift der News */
        public static final String TOPIC = "topic";
        /** Inhalt der News */
        public static final String BODY = "body";
        /** Verfasser der News */
        public static final String AUTHOR = "author";
        /** Verfassungsdatum der News */
        public static final String DATE = "date";
        /** Zu welchem Bereich die News zugeordnet sind (Veranstaltung, systemweit, etc.) */
        public static final String RANGE = "range";
        
        /** Spaltennamen */
    	public static final String[] COLUMNS = new String[] {
    		_ID,
    		TOPIC,
    		BODY,
    		AUTHOR,
    		DATE,
    		RANGE
    	};

    	/** SQL-Anweisung zum Erzeugen der Tabelle */
		public static final String SQL_CREATE = "CREATE TABLE " + DB_TABLE_NAME + "("
		+ _ID + " INTEGER PRIMARY KEY AUTOINCREMENT, "
		+ TOPIC + " TEXT, "
		+ BODY + " TEXT, "
		+ AUTHOR + " TEXT, "
		+ DATE + " TEXT, "
		+ RANGE + " TEXT, "
		+ OBJECT_ID + " TEXT, "
		+ _SYNC_STATE + " INTEGER"
		+ ");";

		/** SQL-Anweisung zum Löschen der Tabelle */
		public static final String SQL_DROP = "DROP TABLE IF EXISTS " + DB_TABLE_NAME + ";";

	}
	
	/**
	 * Beinhaltet Werte, die benötigt werden, um auf die Tabelle {@code /schedules} 
	 * zuzugreifen. Der Aufbau ist analog zu {@link org.jederik.android.provider.StudIP.News}.
	 * @author Jann-Frederik Laß
	 */
	public static class MessagesSent implements BaseColumns {
		
		// Nicht instanziierbar:
		private MessagesSent() {}
		
		public static final String DB_TABLE_NAME = "messages_sent";
	    public static final String CONTENT_TABLE_NAME = "messages_sent";
		public static final Uri CONTENT_URI = Uri.parse("content://" + AUTHORITY + "/" + CONTENT_TABLE_NAME);
        public static final String CONTENT_TYPE = "vnd.android.cursor.dir/org.jederik.studip.sent_message";
        public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/org.jederik.studip.sent_message";
        public static final String TYPE_DESCRIPTOR = TYPE_MESSAGE;

        public static final String RECIPIENT = "recipient";
        public static final String SUBJECT = "subject";
        public static final String TEXT = "text";
        public static final String DATE = "date";
        
		public static final String SQL_CREATE = "CREATE TABLE " + DB_TABLE_NAME + "("
		+ _ID + " INTEGER PRIMARY KEY AUTOINCREMENT, "
		+ RECIPIENT + " TEXT, "
		+ SUBJECT + " TEXT, "
		+ TEXT + " TEXT, "
		+ DATE + " INTEGER, "
		+ _SYNC_STATE + " INTEGER"
		+ ");";

		public static final String SQL_DROP = "DROP TABLE IF EXISTS " + DB_TABLE_NAME + ";";
		
		public static final String WS_PATH = "/messages";

	}
	
	/**
	 * Beinhaltet Werte, die benötigt werden, um auf die Tabelle {@code /messages} 
	 * zuzugreifen. Der Aufbau ist analog zu {@link org.jederik.android.provider.StudIP.News}.
	 * @author Jann-Frederik Laß
	 *
	 */
	public static class Messages implements BaseColumns {
		
		// Nicht instanziierbar:
		private Messages() {}
		
	    public static final String DB_TABLE_NAME = "messages";
	    public static final String CONTENT_TABLE_NAME = "messages";
		public static final Uri CONTENT_URI = Uri.parse("content://" + AUTHORITY + "/" + CONTENT_TABLE_NAME);
		public static final String CONTENT_TYPE = "vnd.android.cursor.dir/org.jederik.studip.message";;
        public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/org.jederik.studip.message";
        public static final String TYPE_DESCRIPTOR = TYPE_MESSAGE;
        
        public static final String SUBJECT = "subject";
        public static final String AUTHOR = "author";
        public static final String DATE = "date";
        public static final String TEXT = "text";
        public static final String AUTHOR_UNAME = "author_uname";
		public static final String RECIPIENT = "recipient";

        public static final String[] OUTPUT_COLUMNS = new String[] {
        	_ID,
			SUBJECT,
			DATE,
			AUTHOR,
			TEXT,
			AUTHOR_UNAME
		};

        public static final String[] INPUT_COLUMNS = new String[] {
			RECIPIENT,
			SUBJECT,
			TEXT
		};
        
		public static final String SQL_CREATE = "CREATE TABLE " + DB_TABLE_NAME + "("
		+ _ID + " INTEGER PRIMARY KEY AUTOINCREMENT, "
		+ SUBJECT + " TEXT, "
		+ AUTHOR + " TEXT, "
		+ DATE + " TEXT, "
		+ TEXT + " TEXT, "
		+ AUTHOR_UNAME + " TEXT, "
		+ RECIPIENT + " TEXT, "
		+ OBJECT_ID + " TEXT, "
		+ _SYNC_STATE + " INTEGER"
		+ ");";

		public static final String SQL_DROP = "DROP TABLE IF EXISTS " + DB_TABLE_NAME + ";";

	}
	
	
	
	/**
	 * Beinhaltet Werte, die benötigt werden, um auf die Tabelle {@code /schedules} 
	 * zuzugreifen. Der Aufbau ist analog zu {@link org.jederik.android.provider.StudIP.News}.
	 * @author Jann-Frederik Laß
	 *
	 */
	public static class Schedules implements BaseColumns {
		
		// Nicht instanziierbar:
		private Schedules() {}
		
		public static final String DB_TABLE_NAME = "schedules";
	    public static final String CONTENT_TABLE_NAME = "schedules";
		public static final Uri CONTENT_URI = Uri.parse("content://" + AUTHORITY + "/" + CONTENT_TABLE_NAME);
        public static final String CONTENT_TYPE = "vnd.android.cursor.dir/org.jederik.studip.schedule";
        public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/org.jederik.studip.schedule";
        public static final String TYPE_DESCRIPTOR = TYPE_SCHEDULE;

        public static final String TITLE = "title";
        public static final String RANGE = "range";
        public static final String START = "start";
        public static final String END = "end";
        public static final String DESCRIPTION = "description";
        public static final String EVENT_ID = "event_id";
        
    	public static final String[] COLUMNS = new String[] {
    		_ID,
    		OBJECT_ID,
    		TITLE,
    		RANGE,
    		START,
    		END,
    		DESCRIPTION,
    		EVENT_ID
    	};

		public static final String SQL_CREATE = "CREATE TABLE " + DB_TABLE_NAME + "("
		+ _ID + " INTEGER PRIMARY KEY AUTOINCREMENT, "
		+ OBJECT_ID + " TEXT, "
		+ TITLE + " TEXT, "
		+ RANGE + " TEXT, "
		+ START + " TEXT, "
		+ END + " TEXT, "
		+ DESCRIPTION + " TEXT, "
		+ EVENT_ID + " INTEGER, "
		+ _SYNC_STATE + " INTEGER"
		+ ");";

		public static final String SQL_DROP = "DROP TABLE IF EXISTS " + DB_TABLE_NAME + ";";

	}
	
	/**
	 * Beinhaltet Werte, die benötigt werden, um auf die Tabelle {@code /feed} 
	 * zuzugreifen. Der Aufbau ist analog zu {@link org.jederik.android.provider.StudIP.News}.
	 * @author Jann-Frederik Laß
	 *
	 */
	public static class Feed implements BaseColumns {
		
		// Nicht instanziierbar:
		private Feed() {}
		
	    public static final String CONTENT_TABLE_NAME = "feed";
		public static final Uri CONTENT_URI = Uri.parse("content://" + AUTHORITY + "/" + CONTENT_TABLE_NAME);
        public static final String CONTENT_TYPE = "vnd.android.cursor.dir/org.jederik.studip.feedentry";
        public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/org.jederik.studip.feedentry";

        public static final String OBJECT_ID = "object_id";
        public static final String OBJECT_TYPE = "object_type";
        public static final String TITLE = "title";
        public static final String DESCRIPTION = "description";
        public static final String DATE = "date";
        public static final String READ = "read";
        
    	public static final String[] COLUMNS = new String[] {
    		_ID,
    		OBJECT_ID,
    		OBJECT_TYPE,
    		TITLE,
    		DESCRIPTION,
    		DATE,
    		READ
    	};

		
    	public static final String DB_TABLE_NAME = "feed";

		public static final String SQL_CREATE = "CREATE TABLE " + DB_TABLE_NAME + "("
		+ _ID + " INTEGER PRIMARY KEY AUTOINCREMENT, "
		+ Feed.OBJECT_ID + " TEXT, "
		+ Feed.OBJECT_TYPE + " TEXT, "
		+ Feed.TITLE + " TEXT, "
		+ Feed.DESCRIPTION + " TEXT, "
		+ Feed.DATE + " TEXT, "
		+ Feed.READ + " TEXT, "
		+ _SYNC_STATE + " INTEGER"
		+ ");";

		public static final String SQL_DROP = "DROP TABLE IF EXISTS " + DB_TABLE_NAME + ";";

        public static final String DEFAULT_SORT_ORDER = DATE + " DESC";
        
        
        public static final String WS_PATH = "/feed";

	}
	
	/**
	 * Beinhaltet Werte, die benötigt werden, um auf die Tabelle {@code /notifications} 
	 * zuzugreifen. Der Aufbau ist analog zu {@link org.jederik.android.provider.StudIP.News}.
	 * @author Jann-Frederik Laß
	 *
	 */
	public static class Notifications implements BaseColumns {
		
		// Nicht instanziierbar:
		private Notifications() {}
		
		/**
		 * Bezeichner der Tabelle
		 */
	    public static final String CONTENT_TABLE_NAME = "notifications";
		public static final Uri CONTENT_URI = Uri.parse("content://" + AUTHORITY + "/" + CONTENT_TABLE_NAME);
        public static final String CONTENT_TYPE = "vnd.android.cursor.dir/org.jederik.studip.notification";
        public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/org.jederik.studip.notification";

        public static final String TYPE = "type";
        public static final String COUNT = "count";
        
    	public static final String[] COLUMNS = new String[] {
    		_ID,
    		TYPE,
    		COUNT,
    	};

        public static final String DEFAULT_SORT_ORDER = TYPE + " DESC";

	}

	/**
	 * Beinhaltet Werte, die benötigt werden, um auf die Tabelle {@code /mycourses} 
	 * zuzugreifen. Der Aufbau ist analog zu {@link org.jederik.android.provider.StudIP.News}.
	 * @author Jann-Frederik Laß
	 *
	 */
	public static class Mycourses implements BaseColumns {
		
		// Nicht instanziierbar:
		private Mycourses() {}
		
		public static final String DB_TABLE_NAME = "mycourses";
	    public static final String CONTENT_TABLE_NAME = "mycourses";
		public static final Uri CONTENT_URI = Uri.parse("content://" + AUTHORITY + "/" + CONTENT_TABLE_NAME);
        public static final String CONTENT_TYPE = "vnd.android.cursor.dir/org.jederik.studip.course";
        public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/org.jederik.studip.course";

        public static final String OBJECT_ID = "object_id";
        public static final String TITLE = "title";
        
    	public static final String[] COLUMNS = new String[] {
    		_ID,
    		OBJECT_ID,
    		TITLE,
    	};

		public static final String SQL_CREATE = "CREATE TABLE " + DB_TABLE_NAME + "("
		+ _ID + " INTEGER PRIMARY KEY AUTOINCREMENT, "
		+ Mycourses.TITLE + " TEXT, "
		+ Mycourses.OBJECT_ID + " TEXT, "
		+ _SYNC_STATE + " INTEGER"
		+ ");";

		public static final String SQL_DROP = "DROP TABLE IF EXISTS " + DB_TABLE_NAME + ";";
		
		public static final String WS_PATH = "/mycourses";

	}
	
	/**
	 * Beinhaltet Werte, die benötigt werden, um auf die Tabelle {@code /courses} 
	 * zuzugreifen. Der Aufbau ist analog zu {@link org.jederik.android.provider.StudIP.News}.
	 * @author Jann-Frederik Laß
	 *
	 */
	public static class Courses implements BaseColumns {
		
		// Nicht instanziierbar:
		private Courses() {}
		
	    public static final String CONTENT_TABLE_NAME = "courses";
		public static final Uri CONTENT_URI = Uri.parse("content://" + AUTHORITY + "/" + CONTENT_TABLE_NAME);
        public static final String CONTENT_TYPE = "vnd.android.cursor.dir/org.jederik.studip.course";
        public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/org.jederik.studip.course";
		public static final String WS_PATH = "/courses";

		/**
		 * Beinhaltet Werte, die benötigt werden, um auf die Tabelle {@code /courses/details} 
		 * zuzugreifen. Der Aufbau ist analog zu {@link org.jederik.android.provider.StudIP.News}.
		 * @author Jann-Frederik Laß
		 */
		public static class Details implements BaseColumns {
			
			// Nicht instanziierbar:
			private Details() {}
			
		    public static final String CONTENT_TABLE_NAME = "details";
			public static final Uri CONTENT_URI = Uri.parse("content://" + AUTHORITY + "/" + Courses.CONTENT_TABLE_NAME + "/*/" + CONTENT_TABLE_NAME);
	        public static final String CONTENT_TYPE = "vnd.android.cursor.dir/org.jederik.studip.course.details";
	        public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/org.jederik.studip.course.details";

	        public static final String OBJECT_ID = "object_id";
	        public static final String TITLE = "title";
	        public static final String SUBTITLE = "subtitle";
	        public static final String DESCRIPTION = "description";
	        public static final String LOCATION = "location";
	        
	    	public static final String[] COLUMNS = new String[] {
	    		_ID,
	    		OBJECT_ID,
	    		TITLE,
	    		SUBTITLE,
	    		DESCRIPTION,
	    		LOCATION
	    	};

		}

		/**
		 * Beinhaltet Werte, die benötigt werden, um auf die Tabelle {@code /courses/participants} 
		 * zuzugreifen. Der Aufbau ist analog zu {@link org.jederik.android.provider.StudIP.News}.
		 * @author Jann-Frederik Laß
		 */
		public static class Participants implements BaseColumns {
			
			// Nicht instanziierbar:
			private Participants() {}
			
		    public static final String CONTENT_TABLE_NAME = "participants";
			public static final Uri CONTENT_URI = Uri.parse("content://" + AUTHORITY + "/" + Courses.CONTENT_TABLE_NAME + "/*/" + CONTENT_TABLE_NAME);
	        public static final String CONTENT_TYPE = "vnd.android.cursor.dir/org.jederik.studip.person";
	        public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/org.jederik.studip.person";

	        public static final String USERNAME = "username";
	        public static final String FULLNAME = "fullname";
	        public static final String STATUS = "status";
	        
	    	public static final String[] COLUMNS = new String[] {
	    		_ID,
	    		USERNAME,
	    		FULLNAME,
	    		STATUS
	    	};
			public static final String WS_PATH = "/participants";
		}
	}
	
	/**
	 * Beinhaltet Werte, die benötigt werden, um auf die Tabelle {@code /course_details} 
	 * zuzugreifen. Der Aufbau ist analog zu {@link org.jederik.android.provider.StudIP.News}.
	 * @author Jann-Frederik Laß
	 */
	public static class CourseDetails implements BaseColumns {
		
	    public static final String DB_TABLE_NAME = "course_details";

        public static final String OBJECT_ID = "object_id";
        public static final String TITLE = "title";
        public static final String SUBTITLE = "subtitle";
        public static final String DESCRIPTION = "description";
        public static final String LOCATION = "location";
        
		public static final String SQL_CREATE = "CREATE TABLE " + DB_TABLE_NAME + "("
		+ _ID + " INTEGER PRIMARY KEY AUTOINCREMENT, "
		+ OBJECT_ID + " TEXT, "
		+ TITLE + " TEXT, "
		+ SUBTITLE + " TEXT, "
		+ DESCRIPTION + " TEXT, "
		+ LOCATION + " TEXT, "
		+ _SYNC_STATE + " INTEGER"
		+ ");";

		public static final String SQL_DROP = "DROP TABLE IF EXISTS " + DB_TABLE_NAME + ";";

	}

	/**
	 * Beinhaltet Werte, die benötigt werden, um auf die Tabelle {@code /course_participants} 
	 * zuzugreifen. Der Aufbau ist analog zu {@link org.jederik.android.provider.StudIP.News}.
	 * @author Jann-Frederik Laß
	 */
	public static class CourseParticipants implements BaseColumns {
		
	    public static final String DB_TABLE_NAME = "course_participants";

        public static final String COURSE_ID = "course_id";
        public static final String USERNAME = "username";
        public static final String FULLNAME = "fullname";
        public static final String STATUS = "status";
        
		public static final String SQL_CREATE = "CREATE TABLE " + DB_TABLE_NAME + "("
		+ COURSE_ID + " INTEGER, "
		+ USERNAME + " TEXT, "
		+ FULLNAME + " TEXT, "
		+ STATUS + " TEXT"
		+ ");";

		public static final String SQL_DROP = "DROP TABLE IF EXISTS " + DB_TABLE_NAME + ";";

	}

	/**
	 * Beinhaltet Werte, die benötigt werden, um auf die Tabelle {@code /persons} 
	 * zuzugreifen. Der Aufbau ist analog zu {@link org.jederik.android.provider.StudIP.News}.
	 * @author Jann-Frederik Laß
	 */
	public static class Persons implements BaseColumns {
		
	    public static final String DB_TABLE_NAME = "persons";

        public static final String USERNAME = "username";
        public static final String FULLNAME = "fullname";
        
        
		public static final String SQL_CREATE = "CREATE TABLE " + DB_TABLE_NAME + "("
		+ _ID + " INTEGER PRIMARY KEY AUTOINCREMENT, "
		+ OBJECT_ID + " TEXT, "
		+ USERNAME + " TEXT, "
		+ FULLNAME + " TEXT"
		+ ");";

		public static final String SQL_DROP = "DROP TABLE IF EXISTS " + DB_TABLE_NAME + ";";

	}

	/**
	 * Beinhaltet Werte, die benötigt werden, um auf die Tabelle {@code /schedules} 
	 * zuzugreifen.
	 * @author Jann-Frederik Laß
	 *
	 */
	public static class ExportSchedule implements BaseColumns {
		
		// Nicht instanziierbar:
		private ExportSchedule() {}
		
	    public static final String CONTENT_TABLE_NAME = "export_schedules";
		public static final Uri CONTENT_URI = Uri.parse("content://" + AUTHORITY + "/" + CONTENT_TABLE_NAME);
        public static final String OUTPUT_TYPE = "vnd.android.cursor.item/org.jederik.studip.schedule";
        public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/org.jederik.studip.schedule";
        public static final String TYPE_DESCRIPTOR = TYPE_SCHEDULE;

        public static final String OBJECT_ID = "object_id";
        public static final String TITLE = "title";
        public static final String LOCATION = "location";
        public static final String DESCRIPTION = "description";
        public static final String START = "start";
        public static final String END = "end";
        public static final String CHDATE = "chdate";
        
    	public static final String[] COLUMNS = new String[] {
    		_ID,
    		OBJECT_ID,
    		TITLE,
    		LOCATION,
    		START,
    		END,
    		DESCRIPTION,
    		CHDATE
    	};
		
    	public static final String WS_PATH = "/export_schedule";
	}
	
	/**
	 * Beinhaltet Werte, die benötigt werden, um auf die Tabelle {@code /visited_objects} 
	 * zuzugreifen. Der Aufbau ist analog zu {@link org.jederik.android.provider.StudIP.News}.
	 * @author Jann-Frederik Laß
	 */
	public static class VisitedObjects implements BaseColumns {
		
		// Nicht instanziierbar:
		private VisitedObjects() {}
		
        public static final String OBJECT_ID = "object_id";
        public static final String VISITDATE = "visitdate";
        
        public static final String WS_PATH = "/visited_objects";
        
	}
	
	/**
	 * Beinhaltet Werte, die benötigt werden, um auf die Tabelle {@code /objects} 
	 * zuzugreifen. Der Aufbau ist analog zu {@link org.jederik.android.provider.StudIP.News}.
	 * @author Jann-Frederik Laß
	 */
	public static class Objects implements BaseColumns {
		
		// Nicht instanziierbar:
		private Objects() {}
		
        public static final String WS_PATH = "/objects";
        
	}
	
}
